Debido a las múltiples versiones en el mercado de
UNIX, se
comenzaron a publicar estándares para que todas las s
versiones fuesen 'compatibles'. La primera de ellas la
lanzó AT&T llamada SVID (System V Interface
Definition) que definiría cómo deberían ser
las llamadas al sistema, el
formato de los archivos y muchas
cosas más, pero la otra versión importante, la de
Bekeley (Berkeley Software Distribution o BSD)
simplemente la ignoró.
Después la IEEE usó un algoritmo
consistente en revisar las llamadas al sistema de ambas versiones
(System V y BSD) y aquellas que eran iguales las definió
como estándares surgiendo así la definición
'Portable Operating System for UNIX' o POSIX, que tuvo buen
éxito y
que varios fabricantes adoptaron rápidamente.
El estándar de POSIX se llama 1003.1
Posteriormente los institutos ANSI e ISO se
interesaron en estandarizar el lenguaje
'C' y conjuntamente se publicaron definiciones estándares
para otras áreas del sistema operativo
como la interconectividad, el intérprete de comandos y otras.
En la tabla 8.1 se muestran las definiciones de POSIX.
Estándar
Descripción
- 1003.0 Introducción y repaso.
- 1003.1 Llamadas al sistema.
- 1003.2 Intérprete y comandos.
- 1003.3 Métodos de prueba.
- 1003.4 Extensiones para tiempo
real. - 1003.5 Lenguaje
Ada. - 1003.6 Extensiones para la seguridad
- 1003.7 Administración del Sistema.
- 1003.8 Acceso transparente a archivos.
- 1003.9 Lenguaje Fortran.
- 1003.10 Supercómputo.
Al momento del auge de los estándares de POSIX
desgraciadamente se formó un grupo de
fabricantes de computadoras
(IBM, DEC y Hewlett-Packard) que lanzaron su propia
versión de UNIX llamada OSF/1 (de Open Software
Fundation).
Lo bueno fue que su versión tenía como
objetivo
cumplir con todas los estándares del IEEE, además
de un sistema de ventanas (el X11), una interfaz amigable para
los usuarios (MOTIF) y las definiciones para cómputo
distribuido (DCE) y administración distribuida
(DME).
La idea de ofrecer una interfaz amigable en UNIX no fue
original de OSF, ya en la versión 3.5 de SunOS de Sun
Microsystems se ofrecía una interfaz amigable y un
conjunto de librerías para crear aplicaciones con interfaz
gráfica técnicamente eficiente y poderosa llamada
SunWindows o SunVIEW.
Esta interfaz junto con sus librerías estaban
evolucionando desde la versión para máquinas
aisladas hacia una versión en red, donde las aplicaciones
podían estarse ejecutando en un nodo de la red y los
resultados gráficos verlos en otro nodo de la red,
pero Sun tardó tanto en liberarlo que le dio tiempo al MIT
de lanzar el X11 y ganarle en popularidad.
AT&T formó, junto con Sun Microsystems y
otras compañías UNIX International y su
versión de UNIX, provocando así que ahora se
manejen esas dos corrientes principales en UNIX.
Las ideas principales de UNIX fueron derivadas del
proyecto
MULTICS (Multiplexed Information and Computing Service) del MIT y
de General Electric. Estas ideas son:
- Todo se maneja como cadena de bytes: Los dispositivos
periféricos, los archivos y los comandos
pueden verse como secuencias de bytes o como entes que las
producen. Por ejemplo, para usar una terminal en UNIX se hace a
través de un archivo
(generalmente en el directorio /dev y con nombre
ttyX). - Manejo de tres descriptores estándares: Todo
comando posee tres descriptores por omisión llamados
'stdin', 'stdout' y 'stderr', los cuales son los lugares de
donde se leen los datos de
trabajo,
donde se envían los resultados y en donde se
envían los errores, respectivamente. El 'stdin' es el
teclado, el
'stdout' y el 'stderr' son la pantalla por omisión
(default). - Capacidades de 'entubar' y 'redireccionar': El
'stdin', 'stdout' y el 'stderr' pueden usarse para cambiar el
lugar de donde se leen los datos, donde se envían los
resultados y donde se envían los errores,
respectivamente. A nivel comandos, el símbolo de 'mayor
que' (>) sirve para enviar los resultados de un comando a un
archivo. Por ejemplo, en UNIX el comando 'ls' lista los
archivos del directorio actual (es lo mismo que 'dir' en DOS).
Si en vez de ver los nombres de archivos en la pantalla se
quieren guardar en el archivo 'listado', el redireccionamiento
es útil y el comando para hacer la tarea anterior es 'ls
> listado'. Si lo que se desea es enviar a imprimir esos
nombres, el 'entubamiento' es útil y el comando
sería 'ls | lpr', donde el símbolo "|" ( pipe) es
el entubamiento y 'lpr' es el comando para imprimir en UNIX
BSD. - Crear sistemas
grandes a partir de módulos: Cada instrucción en
UNIX está diseñada para poderse usar con 'pipes'
o 'redireccionamiento', de manera que se pueden crear sistemas
complejos a través del uso de comandos simples y
elegantes. Un ejemplo sencillo de esto es el siguiente. Suponga
que se tienen cuatro comandos separados A,B,C y D cuyas
funcionalidades son:
Como se ve, cada módulo hace una actividad
específica, si lo que se quiere es un pequeño
sistema que lea un sistema de ecuaciones y
como resultado se tenga un listado 'bonito', simplemente se usa
el entubamiento para leer con el módulo A la matriz, que
su resultado lo reciba el B para obtener la solución,
luego esa solución la reciba el módulo C para que
le ponga los encabezados 'bonitos' y finalmente eso lo tome el
módulo D y lo imprima, el comando completo sería '
A | B | C | D '.
El sistema de archivos de UNIX, desde el punto de vista
del usuario, tiene una organización jerárquica o de
árbol invertido que parte de una raíz conocida como
"/" (diagonal).
Es una diagonal al revés que la usada en DOS.
Internamente se usa un sistema de direccionamiento de archivos de
varios niveles, cuya estructura
más primitiva se le llama 'information node' (i-node) cuya
explicación va más allá de este
trabajo.
El sistema de archivos de UNIX ofreceun poderoso
conjunto de comandos y llamadas al sistema. En la tabla 8.2 se
muestran los comandos más útiles para el manejo de
archivos en UNIX vs. VMS.
Manejo de
Archivos en UNIX y VMS
La protección de archivos en UNIX se maneja por
medio de una cadena de permisos de nueve caracteres. Los nueve
caracteres se dividen en tres grupos de tres
caracteres cada uno.
El primer grupo (1) especifica los permisos del
dueño del archivo. El segundo grupo especifica los
permisos para aquellos usuarios que pertenecen al mismo grupo de
trabajo que el dueño y finalmente el tercer grupo indica
los permisos para el resto del mundo.
En cada grupo de tres caracteres pueden aparecer las
letras RWX en ese orden indicando permiso de leer (READ),
escribir (WRITE) y ejecutar (EXECUTE). Por ejemplo, la cadena
completa RWXR-XR– indica que el dueño tiene los tres
permisos (READ,,WRITE,EXECUTE), los miembros de su grupo de
trabajo tienen permisos de leer y ejecutar (READ,EXECUTE) y el
resto del mundo sólo tienen permiso de leer
(READ).
Las llamadas al sistema más útiles en UNIX
son 'open', 'close' e 'ioctl'. Sirven para abrir, cerrar
archivos; y establecer las características de
trabajo.
Por ejemplo, ya que en UNIX las terminales se accesan a
través de archivos especiales, el 'ioctl' (input output
control) sirve
para establecer la velocidad,
paridad, etc; de la terminal.
El núcleo de UNIX (kernel) se clasifica como de
tipo monolítico, pero en él se pueden encontrar dos
partes principales [Tan92] el núcleo dependiente de la
máquina y el núcleo independiente.
El núcleo dependiente se encarga de las
interrupciones, los manejadores de dispositivos de bajo nivel
(lower half) y parte del manejo de la
memoria.
El núcleo independiente es igual en todas las
plataformas e incluye el manejo de llamadas del sistema, la
planificación de procesos, el
entubamiento, el manejo de centinelas, la paginación e
intercambio, el manejo de discos y del sistema de
archivos.
El manejo de procesos en UNIX es por prioridad y round
robin. En algunas versiones se maneja también un ajuste
dinámico de la prioridad de acuerdo al tiempo que los
procesos han esperado y al tiempo que ya han usado el CPU.
El sistema provee facilidades para crear 'pipes' entre
procesos, contabilizar el uso de CPU por proceso y una
pila común para todos los procesos cuando necesitan
estarse ejecutando en modo privilegiado (cuando hicieron una
llamada al sistema). UNIX permite que un proceso haga una copia
de sí mismo por medio de la llamada 'fork', lo cual es muy
útil cuando se realizan trabajos paralelos o concurrentes;
también se proveen facilidades para el envío de
mensajes entre procesos.
Recientemente Sun Microsystems, AT&T, IBM, Hewlett
Packard y otros fabricantes de computadoras llegaron a un acuerdo
para usar un paquete llamado ToolTalk para crear aplicaciones que
usen un mismo método de
intercambio de mensajes.
Los primeros sistema con UNIX nacieron en
máquinas cuyo espacio de direcciones era muy
pequeño (por ejemplo 64 kilobytes) y tenían un
manejo de memoria real algo complejo. Actualmente todos los
sistemas UNIX utilizan el manejo de memoria
virtual siendo el esquema más usado la
paginación por demanda y
combinación de segmentos paginados, en ambos casos con
páginas de tamaño fijo.
En todos los sistemas UNIX se usa una partición
de disco duro
para el área de intercambio. Esa área se reserva al
tiempo de instalación del sistema operativo. Una regla muy
difundida entre administradores de sistemas es asignar una
partición de disco duro que sea al menos el doble de la
cantidad de memoria real de la computadora.
Con esta regla se permite que se puedan intercambiar
flexiblemente todos los procesos que estén en memoria RAM en un
momento dado por otros que estén en el disco. Todos los
procesos que forman parte del kernel no pueden ser intercambiados
a disco. Algunos sistemas
operativos (como SunOS) permiten incrementar el espacio de
intercambio incluso mientras el sistema está en uso (en el
caso de SunOS con el comando 'swapon').
También es muy importante que al momento de
decidirse por un sistema operativo se pregunte por esa facilidad
de incrementar el espacio de intercambio, así como la
facilidad de añadir módulos de memoria RAM a la computadora
sin necesidad de reconfigurar el núcleo.
El manejo
de entrada/salida en UNIX
Derivado de la filosofía de manejar todo como
flujo de bytes, los dispositivos son considerados como archivos
que se accesan mediante descriptores de archivos cuyos nombres se
encuentran generalmente en el directorio '/dev'. Cada proceso en
UNIX mantiene una tabla de archivos abiertos (donde el archivo
puede ser cualquier dispositivo de entrada/salida).
Esa tabla tiene entradas que corresponden a los
descriptores, los cuales son números enteros [Deitel93]
obtenidos por medio de la llamada a la llamada del sistema
'open'.
Llamadas al sistema de
entrada/salida
En UNIX es posible ejecutar llamadas al sistema de
entrada/salida de dos formas: sincronía y
asíncrona. El modo síncrono es el modo normal de
trabajo y consiste en hacer peticiones de lectura o
escritura que
hacen que el originador tenga que esperar a que el sistema le
responda, es decir, que le de los datos deseados.
A veces se requiere que un mismo proceso sea capaz de
supervisar el estado de
varios dispositivos y tomar ciertas decisiones dependiendo de si
existen datos o no. En este caso se requiere una forma de trabajo
asíncrona. Para este tipo de situaciones existen las
llamadas a las rutinas 'select' y 'poll' que permiten saber el
estado de un
conjunto de descriptores.
Unix es un sistema operativo apropiado para muchas
aplicaciones, ya que ofrece muchas facilidades para proceso de
textos (en un marco atractivo para programadores) y facilidades
de comunicación entre usuarios y
máquinas.
Unix es popular debido a que:
- Es portátil, y por lo tanto, todo el software
desarrollado en él es portátil
también. - Se puede cambiar de máquina sin cambiar de
sistema operativo ni de aplicaciones. - Es fácil de adaptar según los
requerimientos del usuario. - Es muy fiable.
- Es fácil de usar.
- Tiene una amplia gama de utilidades.
Desde el punto de vista técnico, UNIX se refiere
a una familia de
sistemas
operativos que comparten unos criterios de diseño
e interoperabilidad en común. Esta familia incluye
más de 100 sistemas operativos desarrollados a lo largo de
20 años. No obstante, es importante señalar que
esta definición no implica necesariamente que dichos
sistemas operativos compartan código
o cualquier propiedad
intelectual.
- Unix (2005) [Documento en Línea]. Disponible:
http://es.wikipedia.org/wiki/Unix [Consulta:
2006, Junio 15] - Introducción a Unix [Documento en Linea].
Disponible: http://www.unav.es/cti/manuales/Intro_UNIX/indice.html.
[Consulta: 2006, Junio 15] - Sistema Operativo Unix [Documento en Línea].
Disponible: http://www.monografias.com/trabajos32/gestion-sistemas/gestion-sistemas.shtml
[Consulta: 2006, Junio 15.
Dorela Carrasquel
Página anterior | Volver al principio del trabajo | Página siguiente |